home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / SocketServices.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  21.3 KB  |  812 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        SocketServices.h
  3.  
  4.      Contains:    This file contains constants and data structures that
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1994-1997 by Apple Computer, Inc. All rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __SOCKETSERVICES__
  19. #define __SOCKETSERVICES__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __MIXEDMODE__
  25. #include <MixedMode.h>
  26. #endif
  27.  
  28.  
  29.  
  30. #if PRAGMA_ONCE
  31. #pragma once
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #if PRAGMA_IMPORT
  39. #pragma import on
  40. #endif
  41.  
  42. #if PRAGMA_STRUCT_ALIGN
  43.     #pragma options align=mac68k
  44. #elif PRAGMA_STRUCT_PACKPUSH
  45.     #pragma pack(push, 2)
  46. #elif PRAGMA_STRUCT_PACK
  47.     #pragma pack(2)
  48. #endif
  49.  
  50. /*
  51.   ///////////////////////////////////////////////////////////////////////////////////////
  52.       TypeDefs for the Socket Services function codes
  53. */
  54.  
  55. typedef Byte                             SS_BYTE;
  56. typedef Byte                             SS_FLAGS8;
  57. typedef Byte                             SS_IRQ;
  58. typedef Byte                             SS_PWRLEVEL;
  59. typedef UInt16                             SS_ADAPTER;
  60. typedef UInt16                             SS_BCD;
  61. typedef UInt16                             SS_COUNT;
  62. typedef UInt16                             SS_EDC;
  63. typedef UInt16                             SS_FLAGS16;
  64. typedef UInt16                             SS_PAGE;
  65. typedef UInt16                             SS_PWRINDEX;
  66. typedef UInt16                             SS_SIGNATURE;
  67. typedef UInt16                             SS_SKTBITS;
  68. typedef UInt16                             SS_SOCKET;
  69. typedef UInt16                             SS_SPEED;
  70. typedef UInt16                             SS_WINDOW;
  71. typedef UInt16                             SS_WORD;
  72. typedef UInt32                             SS_BASE;
  73. typedef UInt32                             SS_FLAGS32;
  74. typedef UInt32                             SS_OFFSET;
  75. typedef UInt32                             SS_SIZE;
  76. typedef Ptr                             SS_PTR;
  77. typedef OSErr                             SS_RETCODE;
  78. struct SS_SCHARTBL {
  79.     UInt16                             sktCaps;                    /*    SS_FLAGS16*/
  80.     UInt32                             activeHigh;                    /*    SS_FLAGS32*/
  81.     UInt32                             activeLow;                    /*    SS_FLAGS32*/
  82. };
  83. typedef struct SS_SCHARTBL SS_SCHARTBL;
  84.  
  85. struct SS_SISTRUCT {
  86.     UInt16                             bufferLength;                /*    SS_WORD*/
  87.     UInt16                             dataLength;                    /*    SS_WORD*/
  88.     SS_SCHARTBL                     charTable;                    /*    SS_FLAGS16*/
  89. };
  90. typedef struct SS_SISTRUCT SS_SISTRUCT;
  91.  
  92.  
  93. enum {
  94.     STR_SIZE                    = 24
  95. };
  96.  
  97. /* minimum string length*/
  98. struct SS_VISTRUCT {
  99.     UInt16                             bufferLength;                /*    SS_WORD*/
  100.     UInt16                             dataLength;                    /*    SS_WORD*/
  101.     char                             szImplementor[1];            /*    SS_WORD*/
  102.     Byte                             padding[1];                    /*    */
  103. };
  104. typedef struct SS_VISTRUCT SS_VISTRUCT;
  105.  
  106. struct SS_ACHARTBL {
  107.     UInt16                             adpCaps;                    /*    SS_FLAGS16*/
  108.     UInt32                             activeHigh;                    /*    SS_FLAGS32*/
  109.     UInt32                             activeLow;                    /*    SS_FLAGS32*/
  110. };
  111. typedef struct SS_ACHARTBL SS_ACHARTBL;
  112.  
  113. struct SS_PWRENTRY {
  114.     Byte                             powerLevel;                    /*    SS_PWRLEVEL*/
  115.     Byte                             validSignals;                /*    SS_FLAGS8*/
  116. };
  117. typedef struct SS_PWRENTRY SS_PWRENTRY;
  118.  
  119. struct SS_AISTRUCT {
  120.     UInt16                             bufferLength;                /*    SS_WORD*/
  121.     UInt16                             dataLength;                    /*    SS_WORD*/
  122.     SS_ACHARTBL                     charTable;
  123.     UInt16                             numPwrEntries;                /*    SS_WORD*/
  124.     SS_PWRENTRY *                    pwrEntryPtr;
  125. };
  126. typedef struct SS_AISTRUCT SS_AISTRUCT;
  127.  
  128. struct SS_MEMWINTBL {
  129.     UInt16                             memWndCaps;                    /*    SS_FLAGS16*/
  130.     UInt32                             firstByte;                    /*    SS_BASE*/
  131.     UInt32                             lastByte;                    /*    SS_BASE*/
  132.     UInt32                             minSize;                    /*    SS_SIZE*/
  133.     UInt32                             maxSize;                    /*    SS_SIZE*/
  134.     UInt32                             reqGran;                    /*    SS_SIZE*/
  135.     UInt32                             reqBase;                    /*    SS_SIZE*/
  136.     UInt32                             reqOffset;                    /*    SS_SIZE*/
  137.     UInt16                             slowest;                    /*    SS_SPEED*/
  138.     UInt16                             fastest;                    /*    SS_SPEED*/
  139. };
  140. typedef struct SS_MEMWINTBL SS_MEMWINTBL;
  141.  
  142. struct SS_IOWINTBL {
  143.     UInt16                             ioWndCaps;                    /*    SS_FLAGS16*/
  144.     UInt32                             firstByte;                    /*    SS_BASE*/
  145.     UInt32                             lastByte;                    /*    SS_BASE*/
  146.     UInt32                             minSize;                    /*    SS_SIZE*/
  147.     UInt32                             maxSize;                    /*    SS_SIZE*/
  148.     UInt32                             reqGran;                    /*    SS_SIZE*/
  149.     UInt16                             addrLines;                    /*    SS_COUNT*/
  150.     Byte                             eisaSlot;                    /*    SS_FLAGS8*/
  151.     Byte                             padding[1];                    /*    */
  152. };
  153. typedef struct SS_IOWINTBL SS_IOWINTBL;
  154.  
  155. struct SS_WISTRUCT {
  156.     UInt16                             bufferLength;                /*    SS_WORD*/
  157.     UInt16                             dataLength;                    /*    SS_WORD*/
  158.     UInt16                             numTblEntries;                /*    SS_WORD*/
  159.     SS_MEMWINTBL                     memWinTbl;
  160.     SS_IOWINTBL                     ioWinTbl;
  161. };
  162. typedef struct SS_WISTRUCT SS_WISTRUCT;
  163.  
  164.  
  165. /*————————————————————————————————————————————————————————————————————————
  166.     function selectors passed to Socket Service entry point
  167. ————————————————————————————————————————————————————————————————————————*/
  168.  
  169. enum {
  170.     fnSSGetAdapterCount            = 0x80,
  171.     fnSSUnsupported81            = 0x81,
  172.     fnSSUnsupported82            = 0x82,
  173.     fnSSGetSSInfo                = 0x83,
  174.     fnSSInquireAdapter            = 0x84,
  175.     fnSSGetAdapter                = 0x85,
  176.     fnSSSetAdapter                = 0x86,
  177.     fnSSInquireWindow            = 0x87,
  178.     fnSSGetWindow                = 0x88,
  179.     fnSSSetWindow                = 0x89,
  180.     fnSSGetPage                    = 0x8A,
  181.     fnSSSetPage                    = 0x8B,
  182.     fnSSInquireSocket            = 0x8C,
  183.     fnSSGetSocket                = 0x8D,
  184.     fnSSSetSocket                = 0x8E,
  185.     fnSSGetStatus                = 0x8F,
  186.     fnSSResetSocket                = 0x90,
  187.     fnSSUnsupported91            = 0x91,
  188.     fnSSUnsupported92            = 0x92,
  189.     fnSSUnsupported93            = 0x93,
  190.     fnSSUnsupported94            = 0x94,
  191.     fnSSInquireEDC                = 0x95,
  192.     fnSSGetEDC                    = 0x96,
  193.     fnSSSetEDC                    = 0x97,
  194.     fnSSStartEDC                = 0x98,
  195.     fnSSPauseEDC                = 0x99,
  196.     fnSSResumeEDC                = 0x9A,
  197.     fnSSStopEDC                    = 0x9B,
  198.     fnSSReadEDC                    = 0x9C,
  199.     fnSSGetVendorInfo            = 0x9D,
  200.     fnSSAcknowledgeInterrupt    = 0x9E,
  201.     fnSSGetSetPriorHandler        = 0x9F,
  202.     fnSSGetSetSSAddr            = 0xA0,
  203.     fnSSGetAccessOffsets        = 0xA1,
  204.     fnSSUnsupportedA2            = 0xA2,
  205.     fnSSUnsupportedA3            = 0xA3,
  206.     fnSSUnsupportedA4            = 0xA4,
  207.     fnSSUnsupportedA5            = 0xA5,
  208.     fnSSUnsupportedA6            = 0xA6,
  209.     fnSSUnsupportedA7            = 0xA7,
  210.     fnSSUnsupportedA8            = 0xA8,
  211.     fnSSUnsupportedA9            = 0xA9,
  212.     fnSSUnsupportedAA            = 0xAA,
  213.     fnSSUnsupportedAB            = 0xAB,
  214.     fnSSUnsupportedAC            = 0xAC,
  215.     fnSSUnsupportedAD            = 0xAD,
  216.     fnSSVendorSpecific            = 0xAE
  217. };
  218.  
  219. /*    SSVendorSpecificPB.function values*/
  220.  
  221.  
  222. enum {
  223.     fnVSReserved                = 0x00,
  224.     fnVSGetSocketLocationIcon    = 0x01,
  225.     fnVSGetSocketLocationText    = 0x02,
  226.     fnVSDoSocketLocalization    = 0x03,
  227.     fnVSAppleSocketCapabilities    = 0x04,
  228.     fnVSSleepWakeNotification    = 0x05
  229. };
  230.  
  231.  
  232. /*————————————————————————————————————————————————————————————————————————
  233.     defines for the Socket Services function codes
  234. ————————————————————————————————————————————————————————————————————————*/
  235.  
  236. enum {
  237.     AC_IND                        = 1,                            /* adapter characteristics*/
  238.     AC_PWR                        = 2,
  239.     AC_DBW                        = 4
  240. };
  241.  
  242.  
  243. enum {
  244.     AS_POWERDOWN                = 1,
  245.     AS_MAINTAIN                    = 2
  246. };
  247.  
  248.  
  249. enum {
  250.     EC_UNI                        = 1,
  251.     EC_BI                        = 2,
  252.     EC_REGISTER                    = 4,
  253.     EC_MEMORY                    = 8,
  254.     EC_PAUSABLE                    = 16,
  255.     EC_WRITE                    = 16
  256. };
  257.  
  258.  
  259. enum {
  260.     ET_CHECK8                    = 1,
  261.     ET_SDLC16                    = 2
  262. };
  263.  
  264.  
  265. enum {
  266.     IF_MEMORY                    = 1,
  267.     IF_IO                        = 2
  268. };
  269.  
  270.  
  271. enum {
  272.     IRQ_HIGH                    = 64,
  273.     IRQ_ENABLE                    = 128
  274. };
  275.  
  276.  
  277. enum {
  278.     IRQ_MEMORY                    = 4,
  279.     IRQ_IO                        = 4
  280. };
  281.  
  282.  
  283. enum {
  284.     PS_ATTRIBUTE                = 0x01,
  285.     PS_ENABLED                    = 0x02,
  286.     PS_WP                        = 0x04
  287. };
  288.  
  289.  
  290. enum {
  291.     PWR_VCC                        = 128,                            /* Power pins in PwrEntry elements*/
  292.     PWR_VPP1                    = 64,
  293.     PWR_VPP2                    = 32
  294. };
  295.  
  296.  
  297. enum {
  298.     SBM_WP                        = 1,
  299.     SBM_LOCKED                    = 2,
  300.     SBM_EJECT                    = 4,
  301.     SBM_INSERT                    = 8,
  302.     SBM_BVD1                    = 16,
  303.     SBM_BVD2                    = 32,
  304.     SBM_RDYBSY                    = 64,
  305.     SBM_CD                        = 128
  306. };
  307.  
  308.  
  309. enum {
  310.     SBM_LOCK                    = 16,
  311.     SBM_BATT                    = 32,
  312.     SBM_BUSY                    = 64,
  313.     SBM_XIP                        = 128
  314. };
  315.  
  316. /* Vendor Specific Apple Socket Capabilities */
  317.  
  318. enum {
  319.     SBM_SLEEP_PWR                = 1
  320. };
  321.  
  322.  
  323. enum {
  324.     WC_COMMON                    = 1,
  325.     WC_IO                        = 2,
  326.     WC_ATTRIBUTE                = 4,
  327.     WC_TYPE_MASK                = 7,
  328.     WC_WAIT                        = 128
  329. };
  330.  
  331.  
  332. enum {
  333.     WC_BASE                        = 1,
  334.     WC_SIZE                        = 2,
  335.     WC_WENABLE                    = 4,
  336.     WC_8BIT                        = 8,
  337.     WC_16BIT                    = 16,
  338.     WC_BALIGN                    = 32,
  339.     WC_POW2                        = 64,
  340.     WC_CALIGN                    = 128,
  341.     WC_PAVAIL                    = 256,
  342.     WC_PSHARED                    = 512,
  343.     WC_PENABLE                    = 1024,
  344.     WC_WP                        = 2048
  345. };
  346.  
  347.  
  348. enum {
  349.     WC_INPACK                    = 128,
  350.     WC_EISA                        = 256,
  351.     WC_CENABLE                    = 512
  352. };
  353.  
  354.  
  355. enum {
  356.     WS_IO                        = 1,
  357.     WS_ENABLED                    = 2,
  358.     WS_16BIT                    = 4
  359. };
  360.  
  361.  
  362. enum {
  363.     WS_PAGED                    = 8,
  364.     WS_EISA                        = 16,
  365.     WS_CENABLE                    = 32,
  366.     WS_SWAP_LITTLE_TO_BIG_ENDIAN = 64
  367. };
  368.  
  369.  
  370. enum {
  371.     SS_SIG_VALUE                = 0x5353                        /* 'SS'*/
  372. };
  373.  
  374.  
  375. enum {
  376.     SS_CMPL_1_00                = 0x0100,                        /* compliant with rev 1.0 of SS standard*/
  377.     SS_CMPL_1_01                = 0x0101,                        /* compliant with rev 1.01 of SS standard*/
  378.     SS_CMPL_2_00                = 0x0200,                        /* compliant with rev 2.0 of SS standard*/
  379.     SS_CMPL_2_10                = 0x0210                        /* compliant with rev 2.1 of SS standard*/
  380. };
  381.  
  382. /*————————————————————————————————————————————————————————————————————————
  383.     Universal ProcPtr for Socket Service entry point
  384. ————————————————————————————————————————————————————————————————————————*/
  385. typedef CALLBACK_API( short , PCCardSSEntryProcPtr )(UInt16 fnCode, Ptr callPB, Ptr dataPtr);
  386. typedef STACK_UPP_TYPE(PCCardSSEntryProcPtr)                     PCCardSSEntryUPP;
  387. enum { uppPCCardSSEntryProcInfo = 0x00000FA0 };                 /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
  388. #define NewPCCardSSEntryProc(userRoutine)                         (PCCardSSEntryUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPCCardSSEntryProcInfo, GetCurrentArchitecture())
  389. #define CallPCCardSSEntryProc(userRoutine, fnCode, callPB, dataPtr)  CALL_THREE_PARAMETER_UPP((userRoutine), uppPCCardSSEntryProcInfo, (fnCode), (callPB), (dataPtr))
  390. /*————————————————————————————————————————————————————————————————————————
  391.     Card Services calls used by a Socket Service
  392. ————————————————————————————————————————————————————————————————————————*/
  393. struct CSEventEntryPB {
  394.     UInt32                             ssHandlerID;
  395.     UInt16                             adapter;
  396.     UInt16                             socket;
  397.     UInt16                             message;
  398.     Byte                             intrpBits;
  399.     Byte                             padding;
  400. };
  401. typedef struct CSEventEntryPB CSEventEntryPB;
  402.  
  403. typedef CALLBACK_API( void , PCCardCSEntryProcPtr )(CSEventEntryPB *pb);
  404. typedef STACK_UPP_TYPE(PCCardCSEntryProcPtr)                     PCCardCSEntryUPP;
  405. enum { uppPCCardCSEntryProcInfo = 0x000000C0 };                 /* pascal no_return_value Func(4_bytes) */
  406. #define NewPCCardCSEntryProc(userRoutine)                         (PCCardCSEntryUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPCCardCSEntryProcInfo, GetCurrentArchitecture())
  407. #define CallPCCardCSEntryProc(userRoutine, pb)                     CALL_ONE_PARAMETER_UPP((userRoutine), uppPCCardCSEntryProcInfo, (pb))
  408. /*------------        AddSocketServices        ------------                            */
  409.  
  410. struct AddSocketServicesPB {
  411.     PCCardSSEntryUPP                 ssEntry;                    /* -> given to CS for its use*/
  412.     PCCardCSEntryUPP                 csEntry;                    /* <- taken from CS so we know where to enter*/
  413.  
  414.     UInt32                             dataPtr;
  415.     UInt32                             attributes;
  416.     UInt16                             numAdapters;
  417.     UInt16                             numSockets;
  418. };
  419. typedef struct AddSocketServicesPB AddSocketServicesPB;
  420.  
  421. /*------------         ReplaceSocketServices    ------------                            */
  422.  
  423. struct ReplaceSocketServicesPB {
  424.     PCCardSSEntryUPP                 ssEntry;
  425.     PCCardSSEntryUPP                 oldSSEntry;
  426.  
  427.     UInt32                             dataPtr;
  428.     UInt16                             socket;
  429.     UInt16                             numSockets;
  430.     UInt16                             attributes;
  431. };
  432. typedef struct ReplaceSocketServicesPB ReplaceSocketServicesPB;
  433.  
  434. EXTERN_API( OSErr )
  435. CSAddSocketServices                (AddSocketServicesPB *    pb)                                    TWOWORDINLINE(0x7050, 0xAAF0);
  436.  
  437. EXTERN_API( OSErr )
  438. CSReplaceSocketServices            (ReplaceSocketServicesPB * pb)                                TWOWORDINLINE(0x7051, 0xAAF0);
  439.  
  440.  
  441.  
  442. /*————————————————————————————————————————————————————————————————————————
  443.     parameter blocks for each Socket Service function
  444. ————————————————————————————————————————————————————————————————————————*/
  445. struct SSAcknowledgeInterruptPB {
  446.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  447.     UInt16                             sockets;                    /*    SS_SKTBITS*/
  448. };
  449. typedef struct SSAcknowledgeInterruptPB SSAcknowledgeInterruptPB;
  450.  
  451. struct SSGetAccessOffsetsPB {
  452.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  453.     Byte                             mode;                        /*    SS_BYTE*/
  454.     Byte                             reserved;                    /*    padding*/
  455.     UInt16                             count;                        /*    SS_COUNT*/
  456.     Ptr                             buffer;                        /*    SS_PTR*/
  457.     UInt16                             numAvail;                    /*    SS_COUNT*/
  458. };
  459. typedef struct SSGetAccessOffsetsPB SSGetAccessOffsetsPB;
  460.  
  461. struct SSGetAdapterCountPB {
  462.     UInt16                             totalAdapters;                /*    SS_COUNT*/
  463.     UInt16                             sig;                        /*    SS_SIGNATURE*/
  464. };
  465. typedef struct SSGetAdapterCountPB SSGetAdapterCountPB;
  466.  
  467. struct SSGetSetAdapterPB {
  468.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  469.     Byte                             state;                        /*    SS_FLAGS8*/
  470.     Byte                             irqStatus;                    /*    SS_IRQ*/
  471. };
  472. typedef struct SSGetSetAdapterPB SSGetSetAdapterPB;
  473.  
  474. struct SSGetSetEDCPB {
  475.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  476.     UInt16                             edc;                        /*    SS_EDC*/
  477.     UInt16                             socket;                        /*    SS_SOCKET*/
  478.     Byte                             state;                        /*    SS_FLAGS8*/
  479.     Byte                             edcType;                    /*    SS_FLAGS8*/
  480. };
  481. typedef struct SSGetSetEDCPB SSGetSetEDCPB;
  482.  
  483. struct SSGetSetPagePB {
  484.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  485.     UInt16                             window;                        /*    SS_WINDOW*/
  486.     UInt16                             page;                        /*    SS_PAGE*/
  487.     Byte                             state;                        /*    SS_FLAGS8*/
  488.     Byte                             reserved;                    /*    padding*/
  489.     UInt32                             offset;                        /*    SS_OFFSET*/
  490. };
  491. typedef struct SSGetSetPagePB SSGetSetPagePB;
  492.  
  493. struct SSGetSetPriorHandlerPB {
  494.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  495.     Byte                             mode;                        /*    SS_FLAGS8*/
  496.     Byte                             reserved;                    /*    padding*/
  497.     Ptr                             handler;                    /*    SS_PTR*/
  498. };
  499. typedef struct SSGetSetPriorHandlerPB SSGetSetPriorHandlerPB;
  500.  
  501. struct SSGetSetSocketPB {
  502.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  503.     UInt16                             socket;                        /*    SS_SOCKET*/
  504.     UInt16                             vccIndex;                    /*    SS_PWRINDEX*/
  505.     UInt16                             vpp1Index;                    /*    SS_PWRINDEX*/
  506.     UInt16                             vpp2Index;                    /*    SS_PWRINDEX*/
  507.     Byte                             scIntMask;                    /*    SS_FLAGS8*/
  508.     Byte                             state;                        /*    SS_FLAGS8*/
  509.     Byte                             ctlInd;                        /*    SS_FLAGS8*/
  510.     Byte                             ireqRouting;                /*    SS_IRQ*/
  511.     Byte                             ifType;                        /*    SS_FLAGS8*/
  512.     Byte                             padding[1];                    /*    */
  513. };
  514. typedef struct SSGetSetSocketPB SSGetSetSocketPB;
  515.  
  516. struct SSGetSetSSAddrPB {
  517.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  518.     Byte                             mode;                        /*    SS_BYTE*/
  519.     Byte                             subfunc;                    /*    SS_BYTE*/
  520.     UInt16                             numAddData;                    /*    SS_COUNT*/
  521.     Ptr                             buffer;                        /*    SS_PTR*/
  522. };
  523. typedef struct SSGetSetSSAddrPB SSGetSetSSAddrPB;
  524.  
  525. struct SSGetSetWindowPB {
  526.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  527.     UInt16                             window;                        /*    SS_WINDOW*/
  528.     UInt16                             socket;                        /*    SS_SOCKET*/
  529.     UInt32                             size;                        /*    SS_SIZE*/
  530.     Byte                             state;                        /*    SS_FLAGS8*/
  531.     Byte                             reserved;                    /*    padding*/
  532.     UInt16                             speed;                        /*    SS_SPEED*/
  533.     UInt32                             base;                        /*    SS_BASE*/
  534. };
  535. typedef struct SSGetSetWindowPB SSGetSetWindowPB;
  536.  
  537. struct SSGetSSInfoPB {
  538.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  539.     UInt16                             compliance;                    /*    SS_BCD*/
  540.     UInt16                             numAdapters;                /*    SS_COUNT*/
  541.     UInt16                             firstAdapter;                /*    SS_ADAPTER*/
  542. };
  543. typedef struct SSGetSSInfoPB SSGetSSInfoPB;
  544.  
  545. struct SSGetStatusPB {
  546.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  547.     UInt16                             socket;                        /*    SS_SOCKET*/
  548.     Byte                             cardState;                    /*    SS_FLAGS8*/
  549.     Byte                             socketState;                /*    SS_FLAGS8*/
  550.     Byte                             ctlInd;                        /*    SS_FLAGS8*/
  551.     Byte                             ireqRouting;                /*    SS_IRQ*/
  552.     Byte                             ifType;                        /*    SS_FLAGS8*/
  553.     Byte                             padding[1];                    /*    */
  554. };
  555. typedef struct SSGetStatusPB SSGetStatusPB;
  556.  
  557. struct SSGetVendorInfoPB {
  558.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  559.     Byte                             vendorInfoType;                /*    SS_BYTE*/
  560.     Byte                             reserved;                    /*    padding*/
  561.     Ptr                             buffer;                        /*    SS_PTR*/
  562.     UInt16                             release;                    /*    SS_BCD*/
  563. };
  564. typedef struct SSGetVendorInfoPB SSGetVendorInfoPB;
  565.  
  566. struct SSInquireAdapterPB {
  567.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  568.     Ptr                             buffer;                        /*    SS_PTR*/
  569.     UInt16                             numSockets;                    /*    SS_COUNT*/
  570.     UInt16                             numWindows;                    /*    SS_COUNT*/
  571.     UInt16                             numEDCs;                    /*    SS_COUNT*/
  572. };
  573. typedef struct SSInquireAdapterPB SSInquireAdapterPB;
  574.  
  575. struct SSInquireEDCPB {
  576.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  577.     UInt16                             edc;                        /*    SS_EDC*/
  578.     UInt16                             sockets;                    /*    SS_SKTBITS*/
  579.     Byte                             caps;                        /*    SS_FLAGS8*/
  580.     Byte                             types;                        /*    SS_FLAGS8*/
  581. };
  582. typedef struct SSInquireEDCPB SSInquireEDCPB;
  583.  
  584. struct SSInquireSocketPB {
  585.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  586.     UInt16                             socket;                        /*    SS_SOCKET*/
  587.     Ptr                             buffer;                        /*    SS_PTR*/
  588.     Byte                             scIntCaps;                    /*    SS_FLAGS8*/
  589.     Byte                             scRptCaps;                    /*    SS_FLAGS8*/
  590.     Byte                             ctlIndCaps;                    /*    SS_FLAGS8*/
  591.     Byte                             padding[1];                    /*    */
  592. };
  593. typedef struct SSInquireSocketPB SSInquireSocketPB;
  594.  
  595. struct SSInquireWindowPB {
  596.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  597.     UInt16                             window;                        /*    SS_WINDOW*/
  598.     Ptr                             buffer;                        /*    SS_PTR*/
  599.     Byte                             wndCaps;                    /*    SS_FLAGS8*/
  600.     Byte                             reserved;                    /*    padding*/
  601.     UInt16                             sockets;                    /*    SS_SKTBITS*/
  602. };
  603. typedef struct SSInquireWindowPB SSInquireWindowPB;
  604.  
  605. struct SSPauseEDCPB {
  606.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  607.     UInt16                             edc;                        /*    SS_EDC*/
  608. };
  609. typedef struct SSPauseEDCPB SSPauseEDCPB;
  610.  
  611. struct SSReadEDCPB {
  612.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  613.     UInt16                             edc;                        /*    SS_EDC*/
  614.     UInt16                             value;                        /*    SS_WORD*/
  615. };
  616. typedef struct SSReadEDCPB SSReadEDCPB;
  617.  
  618. struct SSResetSocketPB {
  619.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  620.     UInt16                             socket;                        /*    SS_SOCKET*/
  621. };
  622. typedef struct SSResetSocketPB SSResetSocketPB;
  623.  
  624. struct SSResumeEDCPB {
  625.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  626.     UInt16                             edc;                        /*    SS_EDC*/
  627. };
  628. typedef struct SSResumeEDCPB SSResumeEDCPB;
  629.  
  630. struct SSStartEDCPB {
  631.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  632.     UInt16                             edc;                        /*    SS_EDC*/
  633. };
  634. typedef struct SSStartEDCPB SSStartEDCPB;
  635.  
  636. struct SSStopEDCPB {
  637.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  638.     UInt16                             edc;                        /*    SS_EDC*/
  639. };
  640. typedef struct SSStopEDCPB SSStopEDCPB;
  641.  
  642. struct SSVendorSpecificPB {
  643.     UInt16                             vsFunction;                    /*    SS_WORD*/
  644.     UInt16                             adapter;                    /*    SS_ADAPTER*/
  645.     UInt16                             socket;                        /*    SS_SOCKET*/
  646.     UInt16                             bufferSize;                    /*    SS_WORD*/
  647.     Ptr                             buffer;                        /*    SS_PTR*/
  648.     UInt32                             attributes;                    /*    SS_LONG*/
  649. };
  650. typedef struct SSVendorSpecificPB SSVendorSpecificPB;
  651.  
  652. /*    ‘attributes’ constants */
  653.  
  654. enum {
  655.     kSSGoingToSleep                = 0x00000001,
  656.     kSSWakingFromSleep            = 0x00000002
  657. };
  658.  
  659. /*————————————————————————————————————————————————————————————————————————
  660.     Non-specific Socket Services Functions
  661. ————————————————————————————————————————————————————————————————————————*/
  662. EXTERN_API( SS_RETCODE )
  663. SSGetAdapterCount                (SSGetAdapterCountPB *    pb,
  664.                                  Ptr                     dataPtr);
  665.  
  666. /*————————————————————————————————————————————————————————————————————————
  667.     Adapter Functions
  668. ————————————————————————————————————————————————————————————————————————*/
  669. EXTERN_API( SS_RETCODE )
  670. SSAcknowledgeInterrupt            (SSAcknowledgeInterruptPB * pb,
  671.                                  Ptr                     dataPtr);
  672.  
  673. EXTERN_API( SS_RETCODE )
  674. SSGetSetPriorHandler            (SSGetSetPriorHandlerPB * pb,
  675.                                  Ptr                     dataPtr);
  676.  
  677. EXTERN_API( SS_RETCODE )
  678. SSGetSetSSAddr                    (SSGetSetSSAddrPB *        pb,
  679.                                  Ptr                     dataPtr);
  680.  
  681. EXTERN_API( SS_RETCODE )
  682. SSGetAccessOffsets                (SSGetAccessOffsetsPB *    pb,
  683.                                  Ptr                     dataPtr);
  684.  
  685. EXTERN_API( SS_RETCODE )
  686. SSGetAdapter                    (SSGetSetAdapterPB *    pb,
  687.                                  Ptr                     dataPtr);
  688.  
  689. EXTERN_API( SS_RETCODE )
  690. SSGetSSInfo                        (SSGetSSInfoPB *        pb,
  691.                                  Ptr                     dataPtr);
  692.  
  693. EXTERN_API( SS_RETCODE )
  694. SSGetVendorInfo                    (SSGetVendorInfoPB *    pb,
  695.                                  Ptr                     dataPtr);
  696.  
  697. EXTERN_API( SS_RETCODE )
  698. SSInquireAdapter                (SSInquireAdapterPB *    pb,
  699.                                  Ptr                     dataPtr);
  700.  
  701. EXTERN_API( SS_RETCODE )
  702. SSSetAdapter                    (SSGetSetAdapterPB *    pb,
  703.                                  Ptr                     dataPtr);
  704.  
  705. EXTERN_API( SS_RETCODE )
  706. SSVendorSpecific                (SSVendorSpecificPB *    pb,
  707.                                  Ptr                     dataPtr);
  708.  
  709. /*————————————————————————————————————————————————————————————————————————
  710.     Socket Functions
  711. ————————————————————————————————————————————————————————————————————————*/
  712. EXTERN_API( SS_RETCODE )
  713. SSGetSocket                        (SSGetSetSocketPB *        pb,
  714.                                  Ptr                     dataPtr);
  715.  
  716. EXTERN_API( SS_RETCODE )
  717. SSGetStatus                        (SSGetStatusPB *        pb,
  718.                                  Ptr                     dataPtr);
  719.  
  720. EXTERN_API( SS_RETCODE )
  721. SSInquireSocket                    (SSInquireSocketPB *    pb,
  722.                                  Ptr                     dataPtr);
  723.  
  724. EXTERN_API( SS_RETCODE )
  725. SSResetSocket                    (SSResetSocketPB *        pb,
  726.                                  Ptr                     dataPtr);
  727.  
  728. EXTERN_API( SS_RETCODE )
  729. SSSetSocket                        (SSGetSetSocketPB *        pb,
  730.                                  Ptr                     dataPtr);
  731.  
  732. /*————————————————————————————————————————————————————————————————————————
  733.     Window Functions
  734. ————————————————————————————————————————————————————————————————————————*/
  735. EXTERN_API( SS_RETCODE )
  736. SSGetPage                        (SSGetSetPagePB *        pb,
  737.                                  Ptr                     dataPtr);
  738.  
  739. EXTERN_API( SS_RETCODE )
  740. SSGetWindow                        (SSGetSetWindowPB *        pb,
  741.                                  Ptr                     dataPtr);
  742.  
  743. EXTERN_API( SS_RETCODE )
  744. SSInquireWindow                    (SSInquireWindowPB *    pb,
  745.                                  Ptr                     dataPtr);
  746.  
  747. EXTERN_API( SS_RETCODE )
  748. SSSetPage                        (SSGetSetPagePB *        pb,
  749.                                  Ptr                     dataPtr);
  750.  
  751. EXTERN_API( SS_RETCODE )
  752. SSSetWindow                        (SSGetSetWindowPB *        pb,
  753.                                  Ptr                     dataPtr);
  754.  
  755. /*————————————————————————————————————————————————————————————————————————
  756.     Error Detection Functions
  757. ————————————————————————————————————————————————————————————————————————*/
  758. EXTERN_API( SS_RETCODE )
  759. SSGetEDC                        (SSGetSetEDCPB *        pb,
  760.                                  Ptr                     dataPtr);
  761.  
  762. EXTERN_API( SS_RETCODE )
  763. SSInquireEDC                    (SSInquireEDCPB *        pb,
  764.                                  Ptr                     dataPtr);
  765.  
  766. EXTERN_API( SS_RETCODE )
  767. SSPauseEDC                        (SSPauseEDCPB *            pb,
  768.                                  Ptr                     dataPtr);
  769.  
  770. EXTERN_API( SS_RETCODE )
  771. SSReadEDC                        (SSReadEDCPB *            pb,
  772.                                  Ptr                     dataPtr);
  773.  
  774. EXTERN_API( SS_RETCODE )
  775. SSResumeEDC                        (SSResumeEDCPB *        pb,
  776.                                  Ptr                     dataPtr);
  777.  
  778. EXTERN_API( SS_RETCODE )
  779. SSSetEDC                        (SSGetSetEDCPB *        pb,
  780.                                  Ptr                     dataPtr);
  781.  
  782. EXTERN_API( SS_RETCODE )
  783. SSStartEDC                        (SSStartEDCPB *            pb,
  784.                                  Ptr                     dataPtr);
  785.  
  786. EXTERN_API( SS_RETCODE )
  787. SSStopEDC                        (SSStopEDCPB *            pb,
  788.                                  Ptr                     dataPtr);
  789.  
  790.  
  791.  
  792. #if PRAGMA_STRUCT_ALIGN
  793.     #pragma options align=reset
  794. #elif PRAGMA_STRUCT_PACKPUSH
  795.     #pragma pack(pop)
  796. #elif PRAGMA_STRUCT_PACK
  797.     #pragma pack()
  798. #endif
  799.  
  800. #ifdef PRAGMA_IMPORT_OFF
  801. #pragma import off
  802. #elif PRAGMA_IMPORT
  803. #pragma import reset
  804. #endif
  805.  
  806. #ifdef __cplusplus
  807. }
  808. #endif
  809.  
  810. #endif /* __SOCKETSERVICES__ */
  811.  
  812.